/****************************************************************************
 * libwiigui
 *
 * Tantric 2009
 *
 * gui_tooltip.cpp
 *
 * GUI class definitions
 ***************************************************************************/

#include "gui.h"

static GuiImageData tooltipLeft(tooltip_left_png, tooltip_left_png_size);
static GuiImageData tooltipTile(tooltip_tile_png, tooltip_tile_png_size);
static GuiImageData tooltipRight(tooltip_right_png, tooltip_right_png_size);


/**
 * Constructor for the GuiTooltip class.
 */
GuiTooltip::GuiTooltip(const char *t, int Alpha/*=255*/)
:
leftImage(&tooltipLeft), tileImage(&tooltipTile), rightImage(&tooltipRight)
{
	text = NULL;
	height = leftImage.GetHeight();
	leftImage.SetParent(this);
	tileImage.SetParent(this);
	rightImage.SetParent(this);
	leftImage.SetParentAngle(false);
	tileImage.SetParentAngle(false);
	rightImage.SetParentAngle(false);
	SetText(t);
	SetAlpha(Alpha);
}

/*
 * Destructor for the GuiTooltip class.
 */
GuiTooltip::~GuiTooltip()
{
	if(text)	delete text;
}

float GuiTooltip::GetScale()
{
	float s = scale * scaleDyn;

	return s;
}

/* !Sets the text of the GuiTooltip element
 * !\param t Text
 */
void GuiTooltip::SetText(const char * t)
{
	if(text)
	{
		delete text;
		text = NULL;
	}
	int tile_cnt = 0;
	if(t && (text = new GuiText(t, 22, (GXColor){0, 0, 0, 255})))
	{
		text->SetParent(this);
		tile_cnt = (text->GetTextWidth()-12) /tileImage.GetWidth();
		if(tile_cnt < 0) tile_cnt = 0;
	}
	tileImage.SetPosition(leftImage.GetWidth(), 0);
	tileImage.SetTile(tile_cnt);
	rightImage.SetPosition(leftImage.GetWidth() + tile_cnt * tileImage.GetWidth(), 0);
	width = leftImage.GetWidth() + tile_cnt * tileImage.GetWidth() + rightImage.GetWidth();
}

void GuiTooltip::SetWidescreen(bool){}
/*
 * Draw the Tooltip on screen
 */
void GuiTooltip::Draw()
{
	if(!this->IsVisible()) return;

	leftImage.Draw();
	tileImage.Draw();
	rightImage.Draw();
	if(text) text->Draw();

	this->UpdateEffects();
}
